import tkinter as tk
import re
import random


# 定义人称代词数组
我 = ['你', '您', '尔等']
你 = ['我', '俺', '咱', '朕']
# 增加了动词（名词）词库
动词 = ['走路', '玩游戏', '看书', '听音乐', '想你']
# 这里还可以增加更多的词库，比如：形容词词库、介词词库、副词词库、数量词词库等。

# 核心代码
def send():
    global 我,你,动词
    # 获取输入字符串
    text = input.get()
    # 输出主人的问话
    tallk.insert(tk.END,  text + "\n","master")
    # 判断是否是疑问句
    if re.search(r"\S*(？|吗|吗？)$", text):
        # 如果是就将疑问句变成陈述句
        text = re.sub(r"(？|吗|吗？)$", "", text)
        # 在将疑问句变成陈述句之后，将干什么，做什么随机替换成动词与名词的组合
        index = random.randint(0, len(动词) - 1)
        text = re.sub(r"(干|做)(什么){1}$", 动词[index],text)

    # 随机替换人称代词，比如：将你换成我
    index = random.randint(0, len(我) - 1)
    str = text.replace('我', 我[index])
    index = random.randint(0, len(你) - 1)
    str = str.replace('你', 你[index])
    # 输出机器人的回答
    tallk.insert(tk.END,  str + "\n")
  
# 创建主窗口
root = tk.Tk()
root.title("汉语语法|聊天机器人2")

# 创建聊天对话框
tallk = tk.Text(root, width=50, height=14, bg="#CCB")
tallk.pack(fill=tk.BOTH, expand=True)
# 简单样式
tallk.tag_configure("master", justify=tk.RIGHT,foreground="#06E")
input = tk.Entry(root, width=45)
input.pack(side="left")
tk.Button(root, text="发送", command=send).pack(side="right")

# 输入 “你在干什么？” 机器人返回：“我在看书”

root.mainloop()